1. Technical Field
The claimed subject matter relates generally to computer processing and, more specifically, to a method for enabling a JAVA® Virtual Machine (JVM) to execute on a multi-core processor architecture with multiple non-homogeneous, or non-similar Instruction Set Architecture (ISA), cores.
2. Description of the Related Art
International Business Machines Corp. (IBM) of Armonk, N.Y. has been at the forefront of new paradigms in computing. For example, IBM has developed novel approaches in the technology of multiple processor architectures. For years, computers included a single processor and tasks assigned to the computer were all executed on the single processor. Over time, methods were developed to off-load particular portions of a task to other devices, enabling the single processor to execute the overall task more efficiently. One early example of this was the implementation of direct memory access (DMA) in which tasks associated with the fetching and storing of information are performed by computing logic associated with the memory rather than by the processor. In this manner, a processor can continue to execute a task while data from storage is either fetched or stored, which typically takes relatively longer than many other processing tasks.
IBM has also developed novel technologies in the field of multi-processor architecture. For example, in a multi-user system, different users may be assigned to different processors. Another example, in image processing, involves the splitting of a particular image into multiple, smaller images and processing the smaller images on different processors. Another example is a “pipe-line” architecture in which a first processor executes a first task of a job and then passes the result to a second processor to execute a second task. While the second processor is executing the second task, the first processor executes the first task on another part of the job. Of course, a pipe-line architecture may employ more than two processors.
Another development in the art of computer processing is the advent of interpretive engines such as the JAVA® Virtual Machine (JVM). JVM takes instructions written in a high-level language such as JAVA® and transforms those instructions into byte codes, which are then converted into processor specific executable code, or native code. Current multiple processor systems are configured with processors running the same Instruction Set Architecture (ISA) so that a single JVM may assign native code to any processor or, in the case of different processors executing different ISAs, each processor executes its own JVM specifically tailored to the processor's ISA and corresponding native code.
Currently, there is no system in which a JVM, or other type of interpretive engine, may execute on one processor and transparently assign native code tasks to a different processor that executes a different ISA than the processor running the JVM. With the advent of non-homogeneous, multi-processor systems, this has become a serious issue.